home *** CD-ROM | disk | FTP | other *** search
/ Wildcat Files 2 / The Wildcat Files 2 (Arsenal Computer).ISO / wildcat / code401.txt < prev    next >
Text File  |  1994-09-19  |  23KB  |  521 lines

  1. Mustang Software, Inc. is happy to announce that the first minor update
  2. to wcCODE v4 is being prepared for release.  Version 4.01 is in
  3. late development and is scheduled for release in October of 1994.  The
  4. program will be made available to all purchasers of wcCODE 4.00
  5. who either purchased directly from MSI or whose registration card is
  6. on file on the release date.  It will be a free upgrade and will be
  7. mailed to all users.  It will not be available for download.
  8.  
  9. [Note, this message is almost 525 lines long.  If you are reading a
  10. truncated version  on a BBS that cannot handle long messages, you may
  11. obtain the entire text on the MSI HQ BBS as CODE401.TXT.]
  12.  
  13. The following list of additional features, changes and fixes is
  14. published at this time:
  15.  
  16. New features
  17. ------------
  18.  
  19. - C++ style // comments are now supported
  20. - Added BOOLEAN (8 bit signed) and WORD (16 bit unsigned) data types
  21. - The ACTIVECONF field in the user record is now available.  Assigning a
  22.   value to User.ActiveConf is equivalent to calling Join.
  23. - The BYVAL keyword can be used in front of a function argument in its
  24.   declaration to force call-by-value semantics.
  25.  
  26. New functions
  27. -------------
  28.  
  29. ABORTWCMSGHDRFILE(fn as string)
  30. - This statement is for use in FIDOENTR.WCC or INETENTR.WCC.  It erases
  31.   the file specified by fn (no path is allowed, the file is always
  32.   erased from the node work directory).
  33.  
  34. ADDMARKFILE(fn as string, area as word) as boolean
  35.  - This function adds the file "fn" to the user's mark list.  The file must
  36. exist in the file database.  If there is more than one file by the name
  37. "fn" in the file database, the area must be specified, otherwise it is
  38. optional.  This function returns True if the file was successfully added to
  39. tha mark list.
  40.  
  41. ADDMARKFILEDIRECT(fn as string) as boolean
  42.  - This function adds the file "fn" to the user's mark list.  The file does
  43. not have to exist in the file database but a full path should be specified
  44. to the file.  This function returns True if the file was successfully added
  45. to the mark list.
  46.  
  47. DATESTRINGTODATE(mask as string, s as string, d as date)
  48.  - This statement converts a date in string format into a Date variable
  49. based on a mask.  For example, DateStringToDate("mm/dd/yy", "09/15/70", d)
  50. will cause d to contain the date value for September 15, 1970.
  51.  
  52. DELETEFILE(fn as string, area as integer, disktoo as boolean) as boolean
  53.  - This function removes the file named "fn" in area "area" from the file
  54. database.  The "disktoo" parameter indicates whether or not the file will
  55. be removed from disk as well as from the database.  This function returns
  56. True if the file was successfully removed.
  57.  
  58. DELETEUSER(userid as long) as boolean
  59.  - This function deletes a user from the user database by user id number.
  60. This function returns True if the user is successfully deleted.
  61.  
  62. DISPLAYMENU(fn as string)
  63.  - This statement displays a menu display file from the menu display file
  64. directory.  For example, DisplayMenu("MSG") might display MSG5.BBS based on
  65. the user's security level and current display mode.
  66.  
  67. DMYTODATE(day as integer, month as integer, year as integer, d as date)
  68.  - This statement converts a date in day/month/year format to a Wildcat
  69. Date type variable.
  70.  
  71. EDITFILE(fn as string, maxlines as integer, title as string) as boolean
  72.  - This function brings up the Wildcat! full-screen editor to edit the file
  73. "fn".  If "maxlines" is specified, the number of lines in the file is
  74. limited to "maxlines".  If it is omitted the number of lines is limited to
  75. 150.  The "title" is displayed at the top of the screen during editing the
  76. file.  This function returns True if the user selects [S]ave at the edit
  77. message prompt.
  78.  
  79. EDITMESSAGE(msg as messageheader, fn as string, maxlines as integer) as
  80. boolean
  81.  - This function is similar to EDITFILE, except that it takes a message
  82. header in addition to the file name and maximum number of lines.  The
  83. message header should already be filled in with valid information when this
  84. function is called.  This function returns True if the user selects [S]ave
  85. at the edit message prompt.
  86.  
  87. FASTLOGONCHAR as string
  88.  - This function returns the fast logon character, if any, used at logon.
  89.  
  90. FLAGCLEAR(flag as integer/long, value as integer/long)
  91.  - This function clears the flag specified by "value" in the "flag"
  92. variable.
  93.  
  94. FLAGISSET(flag as integer/long, value as integer/long)
  95.  - This function tests the "flag" variable for the flag specified by
  96. "value".  It returns True if the flag is set, or False if it is not set.
  97.  
  98. FLAGSET(flag as integer/long, value as integer/long)
  99.  - This function sets the flag specified by "value" in the "flag" variable.
  100.  
  101. FORMATNUMBER(n as long/real, mask as string) as string
  102.  - This function formats a number according to a mask specification.
  103.  
  104. The FormatNumber function offers advanced numeric formatting especially
  105. applicable to financial reports.
  106.  
  107. The mask parameter is a string that can contain any combination of normal
  108. characters as well as a sequence of the special characters # * @ $ - + , .
  109. This sequence is called a numeric field, and FormatNumber replaces it with
  110. a formatted version of the number.  The number is returned right-justified
  111. within the field, decimals are returned rounded if they exceed the number
  112. of decimals specified by the format, and if the number is too large to be
  113. returned in the field, all digit positions are filled with asterisks.
  114.  
  115. The special characters represent:
  116.  
  117. # A digit position.  If the numeric field contains no * or @ characters,
  118. unused digits are returned as blanks.  If the numeric field contains no
  119. sign positions (+ or - characters) and the number is negative, a floating
  120. minus is returned in front of the number.  Examples:
  121.  
  122.       FormatNumber(34.567, "####") returns "  35"
  123.       FormatNumber(-12.3, "####.##") returns " -12.30"
  124.       FormatNumber(1000.0, "##.##") returns "**.**"
  125.  
  126. * A digit position.  Unused positions are returned as asterisks instead of
  127. blanks.  The * character needs to occur only once in the numeric field to
  128. activate this effect.  The sign of the number is not returned unless the
  129. field also contains a sign character (- or +).  Examples:
  130.  
  131.       FormatNumber(4.567, "*##.##") returns "**4.57"
  132.       FormatNumber(123, "****") returns "*123"
  133.  
  134. @ A digit position.  Unused positions are returned as zeros instead of
  135. blanks.  The @ character needs to occur only once in the numeric field to
  136. activate this effect.  The sign of the number is not returned unless the
  137. field also contains a sign character (- or +).  Examples:
  138.  
  139.       FormatNumber(9, "@##") returns "009"
  140.       FormatNumber(12.3, "@@@.@@") returns "012.30"
  141.  
  142. $ A digit position.  A floating dollar sign is returned in front of the
  143. number.  The $ character needs to occur only once in the numeric field to
  144. activate this effect.  Examples:
  145.  
  146.       FormatNumber(123.45, "$####.##") returns " $123.45"
  147.       FormatNumber(12.34, "*$####.##") returns "***$12.34"
  148.  
  149. - A sign position.  If the number is negative, a minus sign is returned in
  150. that position.  If it is positive, a blank is returned.  Examples:
  151.  
  152.       FormatNumber(-1.2, "-###.##") returns "-  1.20"
  153.       FormatNumber(1.2, "-###.##") returns "   1.20"
  154.  
  155. + A sign position.  If the number is positive, a plus is returned in that
  156. position.  If it is negative, a minus is returned.  Examples:
  157.  
  158.       FormatNumber(1.2, "+###.##") returns "+  1.20"
  159.       FormatNumber(-12.34, "*$####.##+") returns "***$12.34-"
  160.  
  161. , A decimal comma or a separator comma.
  162. . A decimal period or a separator period.  The last period or comma in the
  163. numeric field is considered the decimal delimiter.  Examples:
  164.  
  165.       FormatNumber(123456.78, "##,###,###.##") returns "   123,456.78"
  166.       FormatNumber(-12345.6, "$#.###.###,##") returns "  -$12.345,60"
  167.  
  168. Note: The most frequently asked question about FormatNumber concerns cases
  169. like this:
  170.  
  171.       print FormatNumber(1000.0, "###,###,###")
  172.  
  173. What many users expect is "      1,000".  What they get is "  1,000,000".
  174. This is not a bug.  When using real numbers, FormatNumber treats the last
  175. period or comma in the mask as marking the decimal point, allowing
  176. FormatNumber to be used in countries that use commas in places where
  177. Americans use periods.  To get the expected result, you would need to add a
  178. final decimal point to the mask ("###,###,###.") and then remove it from
  179. the string returned by FormatNumber.  This does not happen when using
  180. FormatNumber to format integers.
  181.  
  182. GETFIRSTFILE(f as filerecord, key as integer) as boolean
  183.  - This function gets the first file in the database based on the key
  184. number specified in "key".  The key numbers are as follows:
  185.  1 = Sorted by file area, then name
  186.  2 = Sorted by file name, then area
  187.  3 = Sorted by file area, then date
  188.  4 = Sorted by file uploader name/id
  189. If the key is omitted, the default key is 2.  This function returns True if
  190. the file record was successfully obtained.
  191.  
  192. GETFIRSTMESSAGE(msg as messageheader) as boolean
  193.  - This function gets the first message in the current conference.  The
  194. return value is True if the message header was successfully obtained.
  195.  
  196. GETFIRSTUNREAD(conf as integer) as integer
  197.  - This function reads the user's first-unread message number for the
  198. conference specified by "conf".
  199.  
  200. GETFIRSTUSER(u as userrecord, key as integer) as boolean
  201.  - This function gets the first user in the database based on the key
  202. number specified in "key".  The key numbers are as follows:
  203.  1 = Sorted by user name (last name first)
  204.  2 = Sorted by security level, then name
  205.  3 = Sorted by expiration date, then name
  206.  4 = Sorted by alias
  207.  5 = Sorted by user id
  208.  6 = Sorted by real name (first name then last name)
  209. If the key is omitted, the default key is 1.  This function returns True if
  210. the user record was successfully obtained.
  211.  
  212. GETHIGHMESSAGE as integer
  213.  - This function returns the highest message number in the current
  214. conference.
  215.  
  216. GETLASTFILE(f as filerecord, key as integer) as boolean
  217.  - This function gets the last file in the database based on the key number
  218. specified in "key" (see GETFIRSTFILE for key numbers).  This function
  219. returns True if the file record was successfully obtained.
  220.  
  221. GETLASTMESSAGE(msg as messageheader) as boolean
  222.  - This function gets the last message in the current conference.  The
  223. return value is True if the message header was successfully obtained.
  224.  
  225. GETLASTREAD(conf as integer) as integer
  226.  - This function reads the user's last-read message number for the
  227. conference specified by "conf".
  228.  
  229. GETLASTUSER(u as userrecord, key as integer) as boolean
  230.  - This function gets the last user in the database based on the key number
  231. specified in "key" (see GETFIRSTUSER for key numbers).  This function
  232. returns True if the user record was successfully obtained.
  233.  
  234. GETLOWMESSAGE as integer
  235.  - This function returns the lowest message number in the current
  236. conference.
  237.  
  238. GETMARKEDFILES as integer
  239.  - This function returns the number of marked files in the user's mark
  240. list.
  241.  
  242. GETMARKEDFILEAREA(i as integer) as integer
  243.  - This function returns the file area for the "i"th marked file in the
  244. mark list.  If i is out of range this function returns 0.
  245.  
  246. GETMARKEDFILENAME(i as integer) as string
  247.  - This function returns the file name for the "i"th marked file in the
  248. mark list.  If i is out of range this function returns an empty string.
  249.  
  250. GETPREVFILE(f as filerecord, key as integer) as boolean
  251.  - This function gets the file record before the specified file record in
  252. the order specified by "key" (see GETFIRSTFILE for key numbers).  This
  253. function returns True if the file record was successfully obtained.
  254.  
  255. GETPREVMESSAGE(msg as messageheader) as boolean
  256.  - This function gets the message before the specified message in the
  257. current conference.  This function returns True if the message header was
  258. successfully obtained.
  259.  
  260. GETPREVUSER(u as userrecord, key as integer) as boolean
  261.  - This function gets the user record before the specified user record in
  262. the order specified by "key" (see GETFIRSTUSER for key numbers).  This
  263. function returns True if the user record was successfully obtained.
  264.  
  265. GETUSERCONFFLAGS(conf as integer) as integer
  266.  - This function returns the user's conference flags for conference "conf".
  267.  
  268. GOTOMENU(menuname as string) as boolean
  269.  - This function sets the next menu to be the menu specified by "menuname".
  270.  Menuname must be the same as the "Menu description" as specified in
  271. Makemenu (case is not significant when searching for the menu name).  Note
  272. that the menu will not be immediately displayed, but will be displayed the
  273. next time the user enters the menu system (usually when the wcCODE program
  274. ends).  Also note that the menu security is NOT checked against the user's
  275. security level when using this function.  This function returns True if the
  276. menu was successfully found.
  277.  
  278. HMSTOTIME(hour as integer, min as integer, sec as integer, t as time)
  279.  - This statement converts a time in hour:minute:second format to a Wildcat
  280. Time type variable.
  281.  
  282. INCDATE(d as date, days as integer, months as integer, years as integer)
  283.  - This statement advances a Date type variable "d" by the amount of time
  284. specified in the "days", "months", and "years" parameters.
  285.  
  286. INCDATETIME(dt as datetime, days as integer, seconds as integer)
  287.  - This statement advances as DateTime type variable "dt" by the amount of
  288. time specified in the "days" and "seconds" parameters.
  289.  
  290. LOCKFILE(filenum as integer, start as long, length as long) as boolean
  291.  - This function locks the file specified by "filenum" starting at position
  292. "start" and covering "length" bytes (note that the start of the file is
  293. position 0 when using this function, unlike other file functions where it
  294. starts at position 1).  Files locked using this function MUST be unlocked
  295. using UNLOCKFILE with the same start and length parameters otherwise
  296. unpredictable results may occur.  To protect the integrity of the Wildcat
  297. system, this function should not be used to lock any Wildcat! files.  This
  298. function returns True if the attempt to lock the file was successful.
  299.  
  300. MARKMESSAGEREAD(n as integer) as boolean
  301.  - This function marks the message numbered "n" in the current conference
  302. as read.  This function returns True if the message was successfully marked
  303. as read.
  304.  
  305. MID()
  306.  - The MID() function can now be used on the left hand side of an
  307. assignment statement to modify part of a string.
  308.  
  309. PARAMCOUNT as integer
  310.  - This function returns the number of parameters passed on the command
  311. line to this wcCODE program.
  312.  
  313. PARAMSTR(n as integer) as integer
  314.  - This function returns the "n"th command line parameter passed on the
  315. command line to this wcCODE program.
  316.  
  317. READBACKCLOSE
  318.  - This statement closes the file that is currently opened for backward
  319. reading.
  320.  
  321. READBACKNEXT as string
  322.  - This function returns the next line in the text file that is currently
  323. opened for backward reading.  The "next" line is actually the line that
  324. precedes the last line read.
  325.  
  326. READBACKOPEN(fn as string) as boolean
  327.  - This function opens the text file "fn" for backward reading.  The return
  328. value is True if the file is opened successfully.
  329.  
  330. READBACKTOF as boolean
  331.  - This function returns True if the file pointer in the file that is
  332. currently open for backward reading has reached the beginning of the file.
  333.  
  334. READWCMSGHDRFILE(msg as messageheader, fn as string)
  335.  - This function is for use in FIDOENTR.WCC or INETENTR.WCC.  It reads the
  336. message header in the file "fn" in the node work directory into the msg
  337. variable.
  338.  
  339. RECEIVEFILE(fn as string, protocol as integer) as boolean
  340.  - This function receives a file into "fn" using the file transfer protocol
  341. specified in "protocol".  If protocol is not specified then the user is
  342. prompted for a protocol.  The protocol is one of Xmodem, XmodemCrc, Ymodem,
  343. YmodemG, Xmodem1K, Xmodem1KG, Kermit, Zmodem, Ascii, or Ext1 through Ext10.
  344.  This function returns True if the file transfer is successful.
  345.  
  346. REMOVEMARKFILE(n as integer)
  347.  - This statement removes the "n"th marked file from the mark list.
  348.  
  349. SETIDLETIMEOUT(min as integer)
  350.  - This statement sets the Wildcat! idle timeout to "min" minutes.  This
  351. setting remains in effect until the user logs off.
  352.  
  353. SETLASTREAD(conf as integer, lastread as integer)
  354.  - This statement sets the user's last-read number in conference "conf" to
  355. "lastread".
  356.  
  357. SETLOGONNAME(name as string, logonparams as string)
  358.  - This statement is for use in PRELOG.WCC, it has no effect when used
  359. elsewhere.  It allows you to set the logon name used when Wildcat! is about
  360. to ask the user for their name.  If this function has been called then
  361. Wildcat! will not ask the "What is your first name?" question, but will
  362. automatically answer it with the name passed to this statement.  Note that
  363. you can also include a password in the name parameter, just as you can when
  364. logging in normally.  The "logonparams" parameter is used as the command
  365. line to LOGON.WCC, if present.
  366.  
  367. SETUSERCONFFLAGS(conf as integer, flags as integer)
  368.  - This statement sets the user's per-conference flags to "flags" for
  369. conference "conf".  The user's current flags should be read with
  370. GETUSERCONFFLAGS before using this function in order to retain the values
  371. of flags that you don't intend to change.
  372.  
  373. STATUSCLEAR(color as byte)
  374.  - This statement clears the status area, if any, to the color specified in
  375. "color".  If the color parameter is omitted the default color is black text
  376. on a white background.
  377.  
  378. STATUSCLEARLINE(line as integer, color as byte)
  379.  - This statement clears the line specified by "line" to the color
  380. specified in "color".  If the color parameter is omitted the default color
  381. is black text on a white background.
  382.  
  383. STATUSCLOSE
  384.  - This statement removes the status area, if any.
  385.  
  386. STATUSOPEN(lines as integer)
  387.  - This statment opens a status area of "lines" lines near the bottom of
  388. the Wildcat! screen, above the user status window.  The other STATUSxxx
  389. functions can be used to display information in this status window.
  390.  
  391. STATUSSCROLL(lines as integer, color as byte)
  392.  - This statement scrolls the status area by "lines" lines, up if lines is
  393. positive, and down if lines is negative.  The new lines are cleared to the
  394. color specified in "color".  If the color parameter is omitted the default
  395. color is black text on a white background.
  396.  
  397. STATUSWRITE(s as string, x as integer, y as integer, color as byte)
  398.  - This statement writes information to the status area.  If the position
  399. (x and y) is not specified, the text is written to the last line of the
  400. status area after scrolling the existing information up by one line.  This
  401. makes it easy to write information to the status area without worrying
  402. about scrolling or position.  If the color is not specified in "color", the
  403. existing screen color is used.
  404.  
  405. TICKER as long
  406.  - This function returns the number of 18.2 Hz timer ticks since midnight.
  407.  
  408. TIMESTRINGTOTIME(mask as string, s as string, t as time)
  409.  - This statement converts a time in string format into a Time variable
  410. based on a mask.  For example, TimeStringToTime("hh:mm:ss", "09:32:00", t)
  411. will cause t to contain the time value for 9:32am.
  412.  
  413. UNLOCKFILE(filenum as integer, start as long, length as long) as boolean
  414.  - This function unlocks the file specified by "filenum" starting at
  415. position "start" and covering "length" bytes (note that the start of the
  416. file is position 0 when using this function, unlike other file functions
  417. where it starts at position 1).  Files unlocked using this function MUST
  418. have been locked using LOCKFILE with the same start and length parameters
  419. otherwise unpredictable results may occur.  This function returns True if
  420. the attempt to unlock the file was successful.
  421.  
  422. VALIDDATE(day as integer, month as integer, year as integer) as boolean
  423.  - This function returns True if the date specified by the day, month, and
  424. year parameters is a valid date.
  425.  
  426. WRITEWCMSGHDRFILE(msg as messageheader, fn as string) as boolean
  427.  - This function is for use in FIDOENTR.WCC or INETENTR.WCC.  It writes the
  428. message header "msg" to the file "fn" in the node work directory.  When the
  429. wcCODE program returns to Wildcat, Wildcat! will read the message header
  430. back from the file.
  431.  
  432. Changed functions
  433. -----------------
  434.  
  435. ADDMESSAGE
  436.  - Now takes two optional parameters, an attachment file name and
  437. conference in which to place the message.
  438.  
  439. DOWNLOAD
  440.  - Now takes two optional parameters, a file name and area.  If these
  441. parameters are not present then the user is prompted for a file.
  442.  
  443. FILEINFO
  444.  - Now takes two optional parameters, a file name and area.  If these
  445. parameters are not present then the user is prompted for a file.
  446.  
  447. GETNEXTFILE
  448.  - Now takes an optional key number.  For file database key numbers, see
  449. GETFIRSTFILE.
  450.  
  451. GETNEXTUSER
  452.  - Now takes an optional key number.  For user database key numbers, see
  453. GETFIRSTUSER.
  454.  
  455. GOODBYE
  456.  - Now takes an optional parameter indicating whether you would like
  457. Wildcat! to ask the user whether they would really like to log off or not.
  458.  
  459. INPUTMASK
  460.  - Now takes two additional optional parameters, a default response and a
  461. flag indicating to Wildcat! to echo back stars (*) to the user instead of
  462. what they typed (this is useful for entering passwords).
  463.  
  464. INPUTYESNO
  465.  - Now takes an optional parameter indicating the default response.
  466.  
  467. JOIN
  468.  - The parameter to JOIN is now optional, if omitted it will allow the user
  469. to select a conference from the list.
  470.  
  471. LISTFILES
  472.  - Now takes an optional parameter indicating the file area.
  473.  
  474. LISTFILESDATA
  475.  - Now takes an optional parameter indicating the file area.
  476.  
  477. MID
  478.  - The last parameter is now optional, if omitted MID will return the
  479. remainder of the string starting at the start position.
  480.  
  481. QUESTIONNAIRE
  482.  - Now can take a questionnaire file name as a parameter so you can run
  483. QUESDATE with QUESTIONNAIRE "QUESDATE".
  484.  
  485. READTEXTFILE
  486.  - Now takes two optional parameters, the file name and area.
  487.  
  488. SEARCHFILES
  489.  - Now takes an optional parameter indicating the file area.
  490.  
  491. SENDFILE
  492.  - Now takes an optional parameter indicating the file transfer protocol to
  493. use (see RECEIVEFILE for a list of valid transfer protocol identifiers).
  494.  
  495. VIEWFILE
  496.  - Now takes two optional parameters, the file name and area.
  497.  
  498. Fixes
  499. -----
  500.  
  501. - Fixed problem with UPDATEUSER
  502.  
  503. - Fixed problem with FINDFIRST
  504.  
  505. - Fixed problem with GETNEXTMESSAGE
  506.  
  507. - Opening a file for APPEND now recognizes a Ctrl-Z at the end of the file
  508.  
  509. - Changing the user language with User.Language = "LANGUAGE" now works
  510.  
  511. - Fixed problem with any RIP command that takes a string parameter
  512.  
  513. - Fixed problem with CURRENTDATE when used on a user date field
  514.  
  515. - Fixed problem with updating user last-new-files date
  516.  
  517. - GETUSER and GETFILEINFO now work with a blank name to get the first record
  518.  
  519. - Alias names are now checked for duplicates when set with user.alias="..."
  520.  
  521.